package com.bidevalution.business.impl;

import com.bidevalution.business.service.BeSectionDecryptService;


import com.bidevalution.dao.entity.BeSectionDecrypt;
import com.bidevalution.dao.mapper.BeSectionDecryptMapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.qtp.auth.api.ParamsService;
import com.qtp.core.model.Paging;
import com.qtp.user.models.SysParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 标书解密业务实现层
 * @author shenh@glodon.com
 * @date 2019-05-06 10:11
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class BeSectionDecryptServiceImpl implements BeSectionDecryptService {

    @Autowired
    private BeSectionDecryptMapper beSectionDecryptMapper;
    @Autowired(required = false)
    private ParamsService paramsService;
    /**
     * 获取投标单位解密信息（关联签到表）
     * @param sectionId
     * @param orgCode
     * @return
     * @throws Exception
     */
    @Override
    public BeSectionDecrypt getBeSectionDecryptInfo(String sectionId, String orgCode) throws Exception {
        //获取第二个数据源
        
        return beSectionDecryptMapper.getBeSectionDecryptInfo(sectionId,orgCode);
    }

    /**
     * 获取投标单位解密信息（不关联签到表）
     * @param sectionId
     * @param orgCode
     * @return
     * @throws Exception
     */
    @Override
    public BeSectionDecrypt getBeSectionDecryptInfoByCode(String sectionId, String orgCode) throws Exception {
        //获取第二个数据源
        
        return beSectionDecryptMapper.getBeSectionDecryptInfoByCode(sectionId,orgCode);
    }

    /**
     * 获取投标单位解密列表
     * @param sectionId 标段Id
     * @param page 分页参数
     * @param rp 分页参数
     * @return
     * @throws Exception
     */
    @Override
    public Paging<List<BeSectionDecrypt>> getBeSectionDecryptList(String sectionId, int page, int rp) throws Exception {
        //获取第二个数据源
        
        //获取分页参数
        Page<BeSectionDecrypt> beSectionDecryptPage = PageHelper.startPage(page, rp);
        List<BeSectionDecrypt> list = beSectionDecryptMapper.getBeSectionDecryptList(sectionId);
        return new Paging(beSectionDecryptPage.getTotal(), list);
    }

    /**
     * 获取已解密的投标文件数量
     * @param sectionId
     * @return
     */
    @Override
    public Long getDecryptedCount(String sectionId) {
        //获取第二个数据源
        
        return beSectionDecryptMapper.getDecryptedCount(sectionId);
    }

    /**
     * 保存解密信息
     * @param sectionId 标段Id
     * @param orgCode 企业ID
     * @param keyValue
     * @return
     */
    @Override
    public Integer saveKeyValue(String sectionId, String orgCode, String keyValue) {
        //获取第二个数据源
        
        return beSectionDecryptMapper.updateKeyValue(sectionId, orgCode, keyValue);
    }

    /**
     *  获得统一登录一条配置备注信息
     * @param patpCode 参数类型
     * @return
     * @throws Exception
     */
    @Override
    public SysParams getOneSysParams(String patpCode) throws Exception {
        return this.paramsService.querySysParamsByCode(patpCode);
    }

    @Override
    public String getDecryptedStartTime(String sectionId) throws Exception {
        //获取第二个数据源
        
        return beSectionDecryptMapper.getDecryptedStartTime(sectionId);
    }


    /**
     * 更新备份文件导入状态
     * @param sectionId 标段Id
     * @param orgCode 企业ID
     * @param importState
     * @return
     */
    @Override
    public  Integer updateImportState(String sectionId, String orgCode, Integer importState) throws Exception{
        //获取第二个数据源
        
        return beSectionDecryptMapper.updateImportState(sectionId, orgCode, importState);
    }


    /**
     * 更新文件解密失败次数
     * @param sectionId 标段Id
     * @param orgCode 企业ID
     * @param importNum
     * @return
     */
    @Override
    public  Integer updateImportNum(String sectionId, String orgCode, Integer importNum) throws Exception{
        //获取第二个数据源
        
        return beSectionDecryptMapper.updateImportNum(sectionId, orgCode, importNum);
    }

    /**
     * 保存密码信息
     * @param sectionId 标段Id
     * @param orgCode 企业ID
     * @param password
     * @return
     */
    @Override
    public Integer savePassword(String sectionId, String orgCode, String password) {
        //获取第二个数据源
        
        return beSectionDecryptMapper.savePassword(sectionId, orgCode, password);
    }
    /**
     * 获取已缴纳保证金单位数
     * @param sectionId
     * @return
     */
    @Override
    public Long getPayDespiteCount(String sectionId) {
        //获取第二个数据源
        
        return beSectionDecryptMapper.getPayDespiteCount(sectionId);
    }
}
